package com.wjh.anyview.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 时间处理类
 *
 * @author wjh
 * @date 2021/10/12 12:19
 * @Package com.wjh.anyview.util.impl
 */
public class TimeUtil {
    /**
     * 格式化日期为：yyyy-MM-dd HH:mm:ss
     *
     * @return 返回格式化后的日期
     */
    public static String dateFormat(Date date) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return dateFormat.format(date);
    }

    /**
     * 字符串转Date
     *
     * @param dateStr 日期格式的字符串
     * @return 返回Date
     */
    public static Date stringToDate(String dateStr) {
        String format = "yyyy-MM-dd'T'HH:mm";
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            return sdf.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * Date对象转时间戳（精确到秒）
     *
     * @param date Date对象
     * @return 返回精确到分钟时间戳
     */
    public static Long dateToTimestamp(Date date) {
        String timeStr = String.valueOf(date.getTime());
        return Long.valueOf(timeStr.substring(0, timeStr.length() - 3));
    }

    /**
     * 10位数时间戳转Date
     *
     * @param timestamp 时间戳
     * @return 返回日期(String)
     */
    public static String timestampToDate(Long timestamp) {
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(timestamp * 1000));
    }

    /**
     * 在传入的时间上加上指定的秒
     *
     * @param date   指定的date
     * @param addMit 指定的秒数
     * @return 精确到分钟的时间戳
     */
    public static String addMitToTimeStamp(Date date, Integer addMit) {
        Long s = Long.parseLong(String.valueOf(date.getTime())) + addMit * 60 * 1000;
        return String.valueOf(s).substring(0, String.valueOf(s).length() - 3);
    }

    /**
     * 在传入的时间上减去指定的分钟数
     *
     * @param date     指定的date
     * @param minusMit 指定的分钟数
     * @return 精确到分钟的时间戳
     */
    public static String minusMitToTimeStamp(Date date, Integer minusMit) {
        Long s = Long.parseLong(String.valueOf(date.getTime())) - minusMit * 60 * 1000;
        return String.valueOf(s).substring(0, String.valueOf(s).length() - 3);
    }

    /**
     * 加指定分钟后的秒钟时间戳
     *
     * @param timestamp 毫秒时间戳
     * @param addMit    加的分钟数
     * @return 返回加上指定分钟后的时间戳
     */
    public static Long timestampAddMit(Long timestamp, Integer addMit) {
        String str = String.valueOf(timestamp);
        return Long.parseLong(str.substring(0, str.length() - 3)) + addMit * 60;
    }

}
